package com.javacoo.sftp.client.api;

import com.javacoo.sftp.client.template.SftpTemplate;

/**
 * Sftp客户端接口
 * <li></li>
 * @author duanyong@javacoo.com
 * @date 2020/5/14 9:49
 */
public interface SftpClient {

    /**
     * 运行处理器
     * <li></li>
     * @author duanyong@javacoo.com
     * @date 2020/5/14 10:29
     * @param key: 客户端配置KEY
     * @param handler: 处理器
     * @return: void
     */
    void run(String key,Handler handler);

    <T> T runAndReturn(String key,ReturnHandler<T> handler);

    @FunctionalInterface
    interface Handler {

        /**
         * <li></li>
         * @author duanyong@javacoo.com
         * @date 2020/5/14 10:23
         * @param template:操作模板类型
         * @return: void
         */
        void doHandle(SftpTemplate template) throws Exception;
    }

    @FunctionalInterface
    interface ReturnHandler<T> {

        /**
         * <li></li>
         * @author duanyong@javacoo.com
         * @date 2020/5/14 10:23
         * @param template:操作模板类型
         * @return: void
         */
        T doHandle(SftpTemplate template) throws Exception;
    }
}
